package com.mobile.service.inter.system;


import com.mobile.service.dto.RoleDTO;
import com.mobile.service.dto.RoleQueryDTO;
import com.mobile.util.PageData;
import com.mobile.util.PageResult;
import com.mobile.util.config.aop.AutoFill;
import com.mobile.util.config.aop.OperateType;
import redis.clients.jedis.Jedis;

import java.util.List;
import java.util.Map;

/**
 * 角色管理服务接口
 */
public interface RoleService {

    /**
     * 分页查询角色列表
     * @param queryDTO 查询条件
     * @return 分页角色列表
     */
    PageResult<RoleDTO> getRoleListPage(RoleQueryDTO queryDTO)throws Exception;

    /**
     * 根据ID查询角色详情
     * @param id 角色ID
     * @return 角色详情
     */
    RoleDTO getRoleById(Integer id)throws Exception;

    /**
     * 新增角色及权限
     * @param roleDTO 角色数据
     * @return 操作结果
     */
    Map<String, Object> addRole(RoleDTO roleDTO)throws Exception;

    /**
     * 修改角色及权限
     * @param roleDTO 角色数据
     * @param jedis Redis连接
     * @return 操作结果
     */
    Map<String, Object> updateRole(RoleDTO roleDTO, Jedis jedis)throws Exception;

    /**
     * 删除角色
     * @param roleId 角色ID
     * @return 操作结果
     */
    Map<String, Object> removeRole(Integer roleId)throws Exception;

    /**
     * 获取所有角色列表（下拉框用）
     * @param userRole 当前用户角色
     * @return 角色列表
     */
    List<PageData> getAllRoleList(PageData userRole)throws Exception;

    /**
     * 获取功能权限树
     * @return 权限树结构
     */
    List<PageData> getAuthTree()throws Exception;

    /**
     * 根据角色代号查询角色
     * @param roleCode 角色代号
     * @return 角色列表
     */
    List<RoleDTO> getRoleByCode(String roleCode)throws Exception;
}